import { formatResources } from '@/components/spaces/resources-v2/format';
import { formatIssues } from '@/views/issues/format';

// 重装空间管理员信息
const formatSpaceAdmins = admins => admins.map(admin => ({
  id: admin.id,
  nickname: admin.nickname,
  avatar: admin.avatar,
}));

// 重装空间拥有者信息
const formatSpaceOwner = owner => ({
  id: owner.id,
  nickname: owner.nickname,
  avatar: owner.avatar,
});

export const formatVoteCount = space => ({
  like: space.votes.like_size,
  collect: space.votes.collection_size,
});

export const formatVoteState = (space) => {
  if (!space.has_vote) return {};
  return {
    like: space.has_vote.like,
    collect: space.has_vote.collection,
  };
};

// 重装space数据
export const formatSpace = space => ({
  id: space.id,
  title: space.title,
  desc: space.description,
  avatar: space.ufile, // 空间封面

  quickTags: space.tag_list || [], // 快捷标签
  wxShare: space.share_url, // 微信小程序二维码图片地址

  voteCount: formatVoteCount(space),
  voteState: formatVoteState(space),

  isJoined: space.is_join, // 当前用户是否加入空间
  membersCount: space.member_count,

  recentDocuments: space.info ? formatResources(space.info.new_product_files || []) : [],
  recentIssues: space.info ? formatIssues(space.info.new_issues || []) : [],

  core: space.open_core, // 是否启用核心区
  public: space.is_open, // 空间是否公开
  autoAccept: space.auto_accept, // 空间是否自动采纳
  top: space.topping, // 空间是否置顶
  recommend: space.recommend, // 空间是否推荐

  adminIds: space.admin.map(id => Number(id)), // 这个空间的管理员的 id 数组（网站管理员也会在里面）
  adminObjs: space.admin_info ? formatSpaceAdmins(space.admin_info) : [], // 这个空间的管理员的信息的数组(主页才有)
  // 2020年4月29日
  admins: space.admin_info ? formatSpaceAdmins(space.admin_info) : [],
  owner: space.owner ? formatSpaceOwner(space.owner) : {}, // 拥有者信息（主页才有）

  created_at: space.created_at,
  updated_at: space.updated_at,
});

// 重装spacesList数据
export const formatSpacesList = spaces => spaces.map(space => formatSpace(space));

// 重装侧边栏统计数据
export const formatSpaceSidebarStatistics = statistics => ({
  docs: statistics.file_count,
  issues: statistics.issue_count,
  ctrbs: statistics.pullquest_count, // ctrb => contributions
  groups: statistics.group_count,
  members: statistics.member_count,
});
